<?php

namespace App\Http\Controllers\Admin\SystemSet;

use App\Exceptions\BasicException;
use App\Http\Controllers\BaseController;
use Illuminate\Http\Request;

//引用http请求类
use App\Response\Response;

class RoleController extends BaseController
{

    /**
     * @api {get} /system-set/role/all 角色管理-所有角色
     * @apiVersion 0.1.0
     * @apiName 系统设置-角色管理-所有角色
     * @apiGroup 系统设置
     * @apiSuccessExample 成功响应
     *      {
     * "code": 200,
     * "data": {
     * "1(role_id)": "超级管理员(role_name)"
     * }
     * }
     */
    public function getAllRoleList(Request $request)
    {
        //获取自己公会下未禁用的所有角色id-name数组
        $data = app('repo_permission')->getAllRoleList();

        return Response::sendData($data);
    }

    /**
     * @api {get} /system-set/role 角色管理-角色列表
     * @apiVersion 0.1.0
     * @apiName 系统设置-角色管理-角色列表
     * @apiGroup 系统设置
     * @apiParam {number} status 要搜索的状态1正常2禁用,可选
     * @apiParam {string} search 要搜索的角色名称,可选
     * @apiSuccessExample 成功响应
     * {
     * "code": 200,
     * "data": {
     * "list": [
     * {
     * "role_id(角色ID)": 1,
     * "role_name(角色名称)": "超级管理员",
     * "add_time(创建时间)": "2020-07-27 13:58:26",
     * "status(状态)": 1,
     * "role_memo(角色备注)": "这是一个测试身份"
     * "admin": [
     * {
     * "admin_id": 35,
     * "role_id": 35,
     * "admin_name": "wangshaodong"
     * }
     * ]
     * }
     * ],
     * "meta": {
     * "page": 1,
     * "limit": 10,
     * "next": null
     * }
     * }
     * }
     */
    public function roleList(Request $request)
    {
        //参数校验
        $v = app('validator')->make($request->all(),
            [
                'perPage' => 'filled|numeric',
                'page'    => 'filled|numeric',
            ]
        );
        if ($v->fails()) {
            throw new BasicException(10001);
        }

        $page = $request->input('page', 1);
        $perPage = $request->input('perPage', 10);
        $param = $request->only(['status', 'search']);

        $list = app('repo_permission')->roleList($param, $page, $perPage);

        return Response::sendList($list);
    }


    /**
     * @api {delete} /system-set/role 角色管理-角色删除
     * @apiVersion 0.1.0
     * @apiName 角色管理-角色删除
     * @apiGroup 系统设置
     * @apiParam {int} id 角色id
     * @apiSuccessExample 成功响应
     * {
     * "code": 200,
     * "data": "删除成功"
     * }
     */
    public function delrole(Request $request)
    {
        $param = $request->all();
        $v = app('validator')->make($param,
            [
                'id' => 'required|integer|min:1',

            ]
        );
        if ($v->fails()) {
            throw new BasicException(10001);
        }
        app('repo_permission')->canDelnrole($param['id']);

        return Response::sendData('删除成功');
    }

}
